JVM: What Are They and What Are Their Differences